package com.unisal.java;

public class MaquinaDeChicletes {

	final static Integer SOLD_OUT = 0;
	final static Integer NO_QUARTER = 1;
	final static Integer HAS_QUARTER = 2;
	final static Integer SOLD = 3;

	Integer state = SOLD_OUT;
	Integer count = 0;

	public MaquinaDeChicletes(Integer count) {
		this.count = count;
		if (count > 0) {
			state = NO_QUARTER;
		}
	}

	public void insertQuarter() {

		if (state == HAS_QUARTER) {
			System.out.println("Voce nao pode inserir outra moeda");
		} else if (state == NO_QUARTER) {
			state = HAS_QUARTER;
			System.out.println("Voce inseriu uma moeda");
		} else if (state == SOLD_OUT) {
			System.out.println("Voce nao pode iserir moedas a maquina esta sem chicletes");
		} else if (state == SOLD) {
			System.out.println("Por favor espere voce ja recebera o chiclete");
		}
	}
	
	public void ejectQuarter(){
		if (state == HAS_QUARTER) {
			System.out.println("Moeda ejetada");
			state = NO_QUARTER;
		} else if (state == NO_QUARTER) {
			//state = HAS_QUARTER; essa linha nao deveria esta aqui, errado no pdf
			System.out.println("Voce nao inseriu uma moeda");
		} else if (state == SOLD_OUT) {
			System.out.println("Desculpe voce ja acionou o mecanismo da maquina");
		} else if (state == SOLD) {
			System.out.println("Voce nao pode ejetar, nao inseriu a moeda ainda");
		}
	}
	
	public void turnCrank(){
		if (state == SOLD){
			System.out.println("Acionar o mecanismo duas vezes nao vai fazer voce conseguir dois chicletes");
		}
		else if (state == NO_QUARTER){
			System.out.println("voce acionou o mecanismo mas nao colocou a moeda");
		}
		else if (state == HAS_QUARTER){
			System.out.println("Voce acionou e macanismo e vai receber o seu chiclete");
			state = SOLD;
			dispense();
		}
	}
	public void dispense(){
		if (state == SOLD){
			System.out.println("O chiclete esta sendo enviado para a saida");
			count = count - 1;
			if (count == 0){
				System.out.println("Oops, terminaram os chicletes");
				state = SOLD_OUT;
			} else {
				state = NO_QUARTER;
			}
		}
		else if (state == NO_QUARTER){
			System.out.println("Voce precisa pagar primeiro");
		}
		else if ( state == SOLD_OUT){
			System.out.println("Nao foi disponibilizado o chiclete");
		}
		else if ( state == HAS_QUARTER){
			System.out.println("Nao foi disponibilizado o chiclete");
		}
	}
	
	@Override
	public String toString() {
//
//		String retorno = "sem estado definido";
//		
//		if (state == HAS_QUARTER) retorno = "Moeda inserida";
//		if (state == NO_QUARTER) retorno = "sem Moeda";
//		if (state == SOLD_OUT) retorno = "sem chicletes";
//		if (state == SOLD) retorno = "chiclete vendido";
//		//if (state == ) retorno = "chiclete vendido";
//		return retorno;
		return state.toString();
	}
}
